<?php

/**
 * mensajeA actions.
 *
 * @package    cronos-doctrine
 * @subpackage mensajeA
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class mensajeAActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    // if ( ($request->isXmlHttpRequest()) && ($request->getParameter('idUser'))){
        
        $mensajeAlerta = new MensajeAlerta();
        $this->mensaje_alertas_incoming = $mensajeAlerta->getMensajeIn($this->getUser()->getAttribute('agente_user'));
        $this->mensaje_alertas_outcoming = $mensajeAlerta->getMensajeOut($this->getUser()->getAttribute('agente_user'));
        $this->mensaje_alertas_eliminado = $mensajeAlerta->getMensajeEliminado($this->getUser()->getAttribute('agente_user'));
        $this->agente= $this->getUser()->getAttribute('agente_user');
        $this->agente_id = $this->getUser()->getAttribute('agente_user');        
        $this->idUser =  $request->getParameter('idUser');
        $this->parent =  $request->getParameter('parent');
    //}
        
        
        if(!$request->getParameter('opcionBandeja')){
        $this->opcionBandeja = 'mensajeEntrada';}else{
        $this->opcionBandeja =  $request->getParameter('opcionBandeja');    
        }
  }

  public function executeShow(sfWebRequest $request)
  {
      $this->mensaje_id =$request->getParameter('mensaje_id');
      $this->agente_id = $this->getUser()->getAttribute('agente_user');
  }
  
  public function executeCount(sfWebRequest $request)
  {
      $mensajeAlerta = new MensajeAlerta();
        $this->mensaje_alertas = $mensajeAlerta->countMensaje($this->getUser()->getAttribute('agente_user'), 2);
        
        $this->idUser =  $request->getParameter('idUser');
        $this->parent =  $request->getParameter('parent');
        
        echo $this->mensaje_alertas;
        exit;
  }
  
  public function executeResponder(sfWebRequest $request)
  {
     //if ( ($request->isXmlHttpRequest()) && ($request->getParameter('idUser'))){
         
         //Arma Formulario Mensaje Alerta para el usuario en cuestion
         $mensajeAlerta = new MensajeAlerta();
         $this->mensajesAnteriores = $mensajeAlerta->getMensajeId($request->getParameter('mensaje_id'));
         $this->mensajesAnteriores->setMensajeStatusId(1);
         $this->mensajesAnteriores->save();
         $mensajeAlerta->setOperadorDeId($this->getUser()->getAttribute('agente_user'));
      
         $this->form = new MensajeAlertaForm($mensajeAlerta);  
         $this->form->setWidget('padre_id',  new sfWidgetFormInputHidden(array(),array('value' => $request->getParameter('mensaje_id'))));
         $this->form->setWidget('mensaje_status_id', new sfWidgetFormInputHidden(array(),array('value' => 2)));
         $this->form->setWidget('operador_para_id', new sfWidgetFormInputHidden(array(),array('value' => 1)));
         $this->form->setWidget('operador_de_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getAttribute('agente_user'))));
         
         //Reasigna la variable usuario para su actualizacion luego Jquery
         $this->idUser = $request->getParameter('idUser');
         $this->parent =  $request->getParameter('parent');
    // }
  }
  

  public function executeNew(sfWebRequest $request)
  {
     //if ( ($request->isXmlHttpRequest()) && ($request->getParameter('idUser'))){
         
         //Arma Formulario Mensaje Alerta para el usuario en cuestion
         $mensajeAlerta = new MensajeAlerta();
         $mensajeAlerta->setOperadorDeId($this->getUser()->getAttribute('agente_user'));
      
         $this->form = new MensajeAlertaForm($mensajeAlerta);
         $this->form->setWidget('mensaje_status_id', new sfWidgetFormInputHidden(array(),array('value' => 2)));
         $this->form->setWidget('operador_de_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getAttribute('agente_user'))));
         
         
         //Reasigna la variable usuario para su actualizacion luego Jquery
         $this->idUser = $request->getParameter('idUser');
         $this->parent =  $request->getParameter('parent');
    // }
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $mensajeAlerta = new MensajeAlerta();
    $mensajeAlerta->setOperadorDeId($this->getUser()->getAttribute('agente_user'));
      
    $this->form = new MensajeAlertaForm($mensajeAlerta);
    $this->form->setWidget('mensaje_status_id', new sfWidgetFormInputHidden(array(),array('value' => 2)));
    $this->form->setWidget('operador_de_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getAttribute('agente_user'))));
    //$this->form->setWidget('operador_para_id', new sfWidgetFormInputHidden(array(),array('value' => 1)));
    
    //Captura Variable Id Usuario
    $this->idUser =  $request->getParameter('idUser');
    $this->parent =  $request->getParameter('parent');
    
    $this->processForm($request, $this->form, $this->idUser,$this->parent);

    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($mensaje_alerta = Doctrine_Core::getTable('MensajeAlerta')->find(array($request->getParameter('id'))), sprintf('Object mensaje_alerta does not exist (%s).', $request->getParameter('id')));
    //Captura Variable Id Usuario
    $this->idUser =  $request->getParameter('idUser');
    $this->parent =  $request->getParameter('parent');
    $this->form = new MensajeAlertaForm($mensaje_alerta);
    $this->form->setWidget('usuario_id', new sfWidgetFormInputHidden(array(),array('value' => $request->getParameter('idUser'))));
    $this->form->setWidget('mensaje_status_id', new sfWidgetFormInputHidden(array(),array('value' => 1)));
    $this->form->setWidget('operador_de_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getGuardUser()->getId())));
         
  }

  public function executeRecover(sfWebRequest $request)
  {
    $this->forward404Unless($mensaje_alerta = Doctrine_Core::getTable('MensajeAlerta')->find(array($request->getParameter('mensaje_id'))), sprintf('Object mensaje_alerta does not exist (%s).', $request->getParameter('mensaje_id')));
    $mensaje_alerta->setMensajeStatusId(1);
    $mensaje_alerta->save();
    $this->redirect('mensajeA/index');
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($mensaje_alerta = Doctrine_Core::getTable('MensajeAlerta')->find(array($request->getParameter('id'))), sprintf('Object mensaje_alerta does not exist (%s).', $request->getParameter('mensaje_id')));

    //Captura Variable Id Usuario
    $this->idUser =  $request->getParameter('idUser');
    $this->parent =  $request->getParameter('parent');
    $this->form = new MensajeAlertaForm($mensaje_alerta);

    $this->processForm($request, $this->form, $this->idUser,$this->parent);

    $this->setTemplate('edit');
  }



  public function executeDelete(sfWebRequest $request)
  {
    //$request->checkCSRFProtection();

    $this->forward404Unless($mensaje_alerta = Doctrine_Core::getTable('MensajeAlerta')->find(array($request->getParameter('mensaje_id'))), sprintf('Object mensaje_alerta does not exist (%s).', $request->getParameter('id')));
    //$mensaje_alerta->delete();
    //$mensaje_alerta = new MensajeAlerta();
    $mensaje_alerta->setMensajeStatusId(3);
    $mensaje_alerta->save();  
    $this->redirect('mensajeA/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form,$idUser,$parent)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $mensaje_alerta = $form->save();
      $mensajes = $request->getParameter($form->getName());
      if($mensajes['operador_para_id2']){
              foreach ($mensajes['operador_para_id2'] as $operador){
                 
                   if($operador != $mensaje_alerta->getOperadorParaId()){
                 
                        $mensaje_alerta2 =  new MensajeAlerta();
                        $mensaje_alerta2->setMensajeStatusId($mensaje_alerta->getMensajeStatusId());
                        $mensaje_alerta2->setOperadorDeId($mensaje_alerta->getOperadorDeId());
                        $mensaje_alerta2->setPadreId($mensaje_alerta->getPadreId());
                        $mensaje_alerta2->setOperadorParaId($operador);
                        $mensaje_alerta2->setNota($mensaje_alerta->getNota());
                        $mensaje_alerta2->save();

                        foreach ($mensaje_alerta->getRecordatorio() as $recordatorio){
                            $recordartorio2 = new Recordatorio();
                            $recordartorio2->setRecordatorioTipoId($recordatorio->getRecordatorioTipoId());
                            $recordartorio2->setRecordatorioTipoTiempoId($recordatorio->getRecordatorioTipoTiempoId());
                            $recordartorio2->setValor($recordatorio->getValor());
                            $recordartorio2->setMensajeAlertaId($mensaje_alerta2->getId());
                            $recordartorio2->save();
                        }
                    }
              }
      }
      
      $this->redirect('mensajeA/index');
    }
  }
  
  public function executeAddRecForm(sfWebRequest $request)
  {
      $this->forward404unless($request->isXmlHttpRequest());
      $number = intval($request->getParameter("num"));

      $deta = $mensaje = Doctrine_Core::getTable('MensajeAlerta')->find($request->getParameter('id'));
      if(!is_null($deta)){
            $form = new MensajeAlertaForm($mensaje);;
      }else{
            $form = new MensajeAlertaForm();
      }
            
      $form->addRecordatorio($number);
      
      
      return $this->renderPartial('addRec',array('form' => $form, 'num' => $number));
  }
}
 